import numpy as np

A = np.array([1, 1, 1])
B = np.array([2, 2, 2])

# vertical stack本身属于一种上下合并，即对括号中的两个整体进行对应操作。
print(np.vstack((A, B)))  # vertical stack

# 利用shape函数可以让我们很容易地知道A和C的属性，从打印出的结果来看，
# A仅仅是一个拥有3项元素的数组（数列），而合并后得到的C是一个2行3列的矩阵
C = np.vstack((A, B))
print(A.shape, C.shape)
print("**************")

D = np.hstack((A, B))  # horizontal stack
print(D)
# [1,1,1,2,2,2]
# D本身来源于A，B两个数列的左右合并，
# 而且新生成的D本身也是一个含有6项元素的序列
print(A.shape, D.shape)
# (3,) (6,)
print("**************")

# [np.newaxis,:]，[:,np.newaxis]数列转矩阵，左边按行，右边按列
print(A[np.newaxis,:])
# [[1 1 1]]
print("**************")

print(A[np.newaxis,:].shape)
# (1,3)
print("**************")

print(A[:,np.newaxis])
"""
[[1]
[1]
[1]]
"""

print(A[:,np.newaxis].shape)
# (3,1)